package com.nowcoder.community.util;

import com.alibaba.fastjson.JSONObject;
import jdk.nashorn.internal.ir.ReturnNode;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.DigestUtils;

import java.util.List;
import java.util.Map;
import java.util.UUID;

/**
 * @BelongsProject: community
 * @BelongsPackage: com.nowcoder.community.util
 * @Author: Master_XXJS
 * @CreateTime: 2022-09-18  08:13
 * @Description: TODO
 * @Version: 1.0
 */
public class GenerateUtil {

    // 通过 UUID 进行随机生成验证码
    public static String generateUUID(){
        return UUID.randomUUID().toString().replaceAll("-","");
    }

    // 通过 md5 进行加密
    public static String md5(String key){
        if (StringUtils.isBlank(key)) {
            return null;
        }

        // 返回加密的密码
        return DigestUtils.md5DigestAsHex(key.getBytes());
    }

    /**
     * 将 controller 中需要返回到前端的数据，进行封装成 json 数据进行返回到前端
     * @param code 状态值
     * @param msg 提示消息
     * @param map 后台查询的数据
     * @return json 的 string 对象
     */
    public static String getJsonString(int code, String msg, Map<String, Object> map){
        //创建一个json的对象
        JSONObject json = new JSONObject();
        //将controller返回到前端的数据，封装到json对象中去
        json.put("code",code);
        json.put("msg",msg);
        //map中不一定有数据，进行判断一下
        if (map != null){
            //先取出 map 集合中的 key，在通过 key 取出我们需要的 value
            // 通过 增强 for each进行循环取值
            for(String key : map.keySet()){
                json.put(key,map.get(key));
            }
        }

        //将 json object 对象转换为 string 对象，进行返回前端
        return json.toJSONString();
    }

    public static String getJsonString(int code,String msg){
        return getJsonString(code,msg,null);
    }

    public static String getJsonString(int code){
        return getJsonString(code,null,null);
    }
}

